<script>
    // 1.完全解构
    let arr = [10, 20, 30];
    var [a, b, c] = arr;
    console.log(a, b, c); // 10 20 30

    // 2.不完全解构：一一对应，多的不管，缺省为undefined
    let arr1 = [10, 20, 30];
    var [x, y] = arr1;
    console.log(x, y); // 10 20

    // 3.一一对应，多的不管
    let arr2 = [10, 20, 30];
    var [a, b, c, d] = arr2;
    console.log(a, b, c, d); // 10 20 30 undefined  缺省的是undefined

    // 4.简写，使用逗号占位
    let arr3 = [10, 20, 30, 40];
    let [ , p, , m] = arr3;
    console.log(p, m); // 20 40

    // 5.设置默认值，没有值或为undefined时起效
    let arr4 = [100, 200];
    var [a, b, c='默认值'] = arr4;
    console.log(a, b , c); // 100 200 '默认值'

    let arr5 = [100, 200, 300];
    var [a, b, c='默认值'] = arr5;
    console.log(a, b , c); // 100 200 300

    let arr6 = [100, 200, undefined];
    var [a, b, c='默认值'] = arr6;
    console.log(a, b , c); // 100 200 默认值

    // 6.使用:数据交换
    let x = 10, y = 20;
    [y, x] = [x, y]; // 不加声明
    console.log(x, y); // 20 10
</script>